package 组合模式;

/**
 * 组合模式（Composite Pattern），又叫部分整体模式，是用于把一组相似的对象当作一个单一的对象
 * 组合模式依据树形结构来组合对象，用来表示部分以及整体层次
 * 这种类型的设计模式属于结构型模式，它创建了对象组的树形结构
 */
public class Test {

    public static void main(String[] args) {
        // - Component抽象组件：为组合中的所有对象提供一个接口，不管是叶子对象还是组合对象
        // - Component组合节点对象：实现了接口的所有操作，并且持有子节点对象
        // - Leaf叶子节点对象：叶子节点没有任何子节点，实现了接口中的某些操作
        BatchDog grand = new BatchDog("grand");
        BatchDog father = new BatchDog("father");
        BatchDog mother = new BatchDog("mother");
        BatchDog child1 = new BatchDog("child1");
        BatchDog child2 = new BatchDog("child2");
        BatchDog child3 = new BatchDog("child3");
        BatchDog child4 = new BatchDog("child4");
        grand.getChilds().add(father);
        grand.getChilds().add(mother);
        father.getChilds().add(child1);
        father.getChilds().add(child2);
        mother.getChilds().add(child3);
        mother.getChilds().add(child4);
        grand.dance();
    }
}
